// 后台订单相关
import { request } from '@/utils/request'
import type { BaseResponse } from '@/types/request'

// 订单查询参数
export interface OrderQueryParams {
  orderId?: string // 订单号
  orderName?: string // 订单名称
  orderProductId?: string // 订单商品ID
  orderDes?: string // 订单描述
  orderProductPrice?: string // 订单商品单价
  orderSum?: string // 订单总价
  orderTotal?: string // 下单数
  orderProductImg?: string // 商品图片链接
  orderType?: string // 订单状态
  orderByUser?: string // 下单人ID
  orderByUserName?: string // 下单人姓名
  orderByUserTel?: string // 下单人电话
  orderByUserOtherInfo?: string // 订单附加信息
  orderCommand?: string // 订单口令
  OrderCreateTime?: string // 下单时间
  orderOperateTm?: string // 订单处理完成时间
  pageSize?: number // 每页条数
  currentPage?: number // 当前页数
}

// 订单信息
export interface OrderInfo {
  id: string | number
  orderId: string // 订单号
  orderName: string // 订单名称
  orderProductId: string // 订单商品ID
  orderDes: string // 订单描述
  orderProductPrice: number // 订单商品单价
  orderSum: number // 订单总价
  orderTotal: number // 下单数
  orderProductImg: string // 商品图片链接
  orderType: string // 订单状态
  orderByUser: string // 下单人ID
  orderByUserName: string // 下单人姓名
  orderByUserTel: string // 下单人电话
  orderByUserOtherInfo: string // 订单附加信息
  orderCommand: string // 订单口令
  OrderCreateTime: string // 下单时间
  orderOperateTm: string // 订单处理完成时间
}

// 订单列表响应
export interface OrderListResponse {
  list: OrderInfo[]
  total: number
  pageSize: number
  currentPage: number
}

// 创建/更新订单参数
export interface OrderCreateParams {
  orderName: string // 订单名称
  orderProductId: string // 订单商品ID
  orderDes: string // 订单描述
  orderProductPrice: number // 订单商品单价
  orderTotal: number // 下单数
  orderProductImg?: string // 商品图片链接
  orderType: string // 订单状态
  orderByUser: string // 下单人ID
  orderByUserName: string // 下单人姓名
  orderByUserTel: string // 下单人电话
  orderByUserOtherInfo?: string // 订单附加信息
  orderCommand?: string // 订单口令
}

// 用户信息
export interface UserInfo {
  id: string | number
  username: string
  email: string
  role: string
  avatar?: string
  phone?: string
  department?: string
  bio?: string
  permissions?: string[]
  createTime?: string
  lastLoginTime?: string
}

// 修改密码参数
export interface ChangePasswordParams {
  oldPassword: string
  newPassword: string
  confirmPassword: string
}

/** 后台订单类 */
export class OrderAPI {
  
  // 获取订单列表
  static async orderListBak(params: OrderQueryParams): Promise<BaseResponse<OrderListResponse>> {
    return request.post<OrderListResponse>('/api/orders/list', params)
  }

  // 创建订单
  static async createOrder(params: OrderCreateParams): Promise<BaseResponse<OrderInfo>> {
    return request.post<OrderInfo>('/api/orders/create', params)
  }

  // 更新订单
  static async updateOrder(id: string | number, params: Partial<OrderCreateParams>): Promise<BaseResponse<OrderInfo>> {
    return request.put<OrderInfo>(`/api/orders/${id}`, params)
  }

  // 删除订单
  static async deleteOrder(id: string | number): Promise<BaseResponse<null>> {
    return request.delete<null>(`/api/orders/${id}`)
  }

  // 获取订单详情
  static async getOrderDetail(id: string | number): Promise<BaseResponse<OrderInfo>> {
    return request.get<OrderInfo>(`/api/orders/${id}`)
  }

  // 批量删除订单
  static async batchDeleteOrders(ids: (string | number)[]): Promise<BaseResponse<null>> {
    return request.post<null>('/api/orders/batch-delete', { ids })
  }

  // 导出订单
  static async exportOrders(params: OrderQueryParams): Promise<BaseResponse<any>> {
    return request.post<any>('/api/orders/export', params)
  }
}

export default OrderAPI 